
#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
vector<int> G[N]; // 邻接表
int visited[N];   // 标记节点是否被访问
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int a, b;
    cin >> a >> b;
    if (a == 0 && b == 0)
    G[0].push_back(i); // i号技能无师自通
    else {
      G[a].push_back(i); //
      G[b].push_back(i);
    }
  }
  queue<int> q; // 创建一个队列，用于BFS遍历
  q.push(0); // 从0号技能开始遍历
  int ans = 0;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    ans++;
    for (auto son : G[u]) {
      if (!visited[son]) {
        visited[son] = 1;
        q.push(son);
      }
    }

    /*    for(int i=0;i<G[u].size();i++){
         int son = G[u][i];
         if (!visited[son]) {
           visited[son] = 1;
           q.push(son);
         }
       } */
  }
  cout << ans - 1;

  return 0;
}